home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / utilities / misc / sm_1_32.lha / SM / SM.anl < prev    next >
Encoding:
Text File  |  1994-06-24  |  30.0 KB  |  807 lines

  1.  
  2.                    ScreenManager by Bernhard Möllemann
  3.                           all rights reserved
  4.  
  5.  
  6.                Hilfsprogramm zum Verwalten von Public-Screens
  7.  
  8.                               Version V1.32
  9.  
  10.  
  11. ScreenManager (SM) ist ein kleines CLI-Programm, um Public-Screens zu
  12. öffnen, schließen oder noch andere Dinge zu tun. Die Screens können
  13. mit frei wählbarer Auflösung und Farben geöffnet werden. Auch die
  14. DrawInfo, die bestimmt, welche Farbe für Glanzeffekte verwendet wird,
  15. ist wählbar.
  16. SM kann aber auch bestimmte Screens zum System-Default-Screen machen
  17. und die anderen Public-Screen-Modes ändern. Außerdem ist es möglich,
  18. sich eine Liste aller Screens im System ausgeben zu lassen oder sich über
  19. Auflösung und andere Eigenschaften eines Screens zu informieren.
  20.  
  21. Diese Anleitung gliedert sich in 6 Teile:
  22.   Copyright
  23.   CLI
  24.   Beispiele
  25.   Workbench
  26.   HotKeys
  27.   Schluß
  28. Das Copyright _muß_ jeder lesen! Wer schnell etwas ausprobieren
  29. will, sollte danach einfach die Beispiele durchprobieren. Die
  30. ernsthaften Anwender kommen allerdings nicht um die Lektüre der
  31. CLI-Optionen herum.
  32.  
  33.  
  34.                              Copyright
  35.                              ---------
  36.  
  37. Das Programmpaket ScreenManager ist Copyright 1994 Bernhard Möllemann.
  38. Alle Rechte vorbehalten.
  39.  
  40. Die Benutzung des Programms ScreenManager geschieht auf eigenes
  41. Risiko. Falls durch die Benutzung des Programms irgendein Schaden
  42. entsteht, kann der Autor dafür nicht haftbar gemacht werden.
  43.  
  44.  
  45. Dieses Programm ist frei kopierbar, solange folgende Regeln eingehalten
  46. werden:
  47.  
  48.  · ScreenManager darf nur als Ganzes verbreitet werden. Es müssen folgende
  49.    Dateien in dieser Anordnung kopiert werden:
  50.      SM/ScreenManager
  51.      SM/ScreenManager.info
  52.      SM/SM.doc
  53.      SM/SM.anl
  54.      SM/SM.ver
  55.      SM/SM.doc.info
  56.      SM/SM.anl.info
  57.      SM/SM.ver.info
  58.      SM.info
  59.      SM.displayme
  60.  
  61.  · Das Paket darf nur in ungepackter Form oder als LhA-Archiv verbreitet
  62.    werden. Das LhA-Archiv muß SM_1_32.lha oder SM.lha heißen.
  63.  
  64.  · Weder das Archiv noch eine der Dateien dürfen verändert werden. Einzige
  65.    Ausnahme ist das Entfernen von Dateien, die nicht zum Archiv gehören.
  66.  
  67.  · Es darf kein Gewinn mit dem Verkauf, Vertrieb oder Kopieren des
  68.    Programms erwirtschaftet werden.
  69.  
  70.  · Es darf ausschließlich auf folgenden Public-Domain Disketten
  71.    verbreitet werden:
  72.      AmigaLibDisks von Fred Fish
  73.      AUGS (Amiga User Group Switzerland)
  74.      AmigaJUICE
  75.      SAUG (Saarbrückener Amiga User Group)
  76.      Time
  77.  
  78.  · Es darf nicht ohne meine Einwilligung auf CD-ROMs verbreitet werden.
  79.    Für die CD "Meeting Pearls Vol #1" ist hiermit die Genehmigung erteilt.
  80.  
  81. Alle, die eine der oben ausgeschlossenen Formen der Verbreitung
  82. wünschen, müssen eine schriftliche Erlaubnis des Autors haben.
  83.  
  84. Diese gibt es bei:
  85.  
  86.     Bernhard Möllemann
  87.     Luisenstraße 17
  88.  
  89.     76137 Karlsruhe
  90.     Germany
  91.  
  92.  
  93.                                CLI
  94.                                ---
  95.  
  96. Wie gesagt, läßt sich mit dem ScreenManager das "Screen-System" des
  97. Amiga kontrollieren. Es ist noch nicht möglich, das mit der Maus zu
  98. machen. Eine GUI ist am Entstehen, aber noch nicht fertig.
  99.  
  100. Da es Public-Screens erst ab OS2.0 gibt, ist dieses natürlich
  101. Voraussetzung. Der ScreenManager sollte jedoch auch mit höheren
  102. Betriebssystemversionen laufen.
  103.  
  104. Bliebe eigentlich nur noch zu sagen, daß der ScreenManager auch
  105. resi(dent) gemacht werden kann!
  106.  
  107. Es gibt sechs verschiedene Aufgaben, die der ScreenManager lösen kann:
  108.   Öffnen von Screens
  109.   Schließen von Screens
  110.   Informationen über Screen oder Graphikmodus liefern
  111.   Liste der Graphikmodi ausgeben
  112.   Schon geöffnete Screens manipulieren
  113.   Globale Einstellungen ändern
  114.  
  115. Das geschieht über jeweils einen Aufruf mit einer oder mehreren der
  116. folgenden Optionen (bitte nicht erschrecken!):
  117.   NAME:         Name des Screens
  118.  
  119.   OPEN:         einen neuen Screen öffnen
  120.   CLOSE:        einen bestimmten Screen schließen
  121.   INFO:         gibt Infos über einen Screen aus
  122.   LIST:         listet Screens oder Modi auf
  123.  
  124.   EXPERT/FORCE: gibt mehr Infos aus und schaltet einige Abfragen ab
  125.   QUIET:        unterdrückt Fehlermeldungen im CLI
  126.  
  127.   TITLE:        Screentitel bei OPEN
  128.   DEPTH/PLANES: Anzahl der Bitplanes bei OPEN
  129.   MODE:         Auflösung bei OPEN. Der Name des ScreenModes
  130.   DISPID:       alternativ zu MODE ist dies die DisplayID eines neuen
  131.                 Screens
  132.   SIZE/POS:     Größe des Screens bei OPEN und Position beim Bewegen
  133.   DISPCLIP:     Größe des sichtbaren Screenbereichs bei OPEN
  134.   COLORS:       Farben bei OPEN.
  135.   PENS:         Farbnummern für DrawInfo
  136.   NODRAG:       Der Screen kann nicht mit der Maus bewegt werden
  137.   EXCLUSIVE:    Der Screen wird immer allein dargestellt
  138.   INTERLEAVED:  verlangt Interleaved BitMaps für diesen Screen
  139.   PARENT:       Gibt einen Parent-Screen an, zu dem dieser ein Child wird
  140.   FONT:         Font, der bei OPEN vom Screen benutzt werden soll
  141.   FONTSIZE:     Größe des obigen Fonts
  142.  
  143.   CLOSEGAD:     versieht Screen mit einem Closegadget
  144.   AUTOCLOSE:    schließt Screen automatisch beim Schließen des letzten
  145.                 Fensters
  146.   CX_TOFRONT:   HotKey, der den Screen nach vorne bringt
  147.   CX_DEFAULT:   HotKey, der den Screen zum System-Default-Screen macht
  148.   CX_PRIORITY:  Priorität, auf der die HotKeys eingeklinkt werden
  149.  
  150.   TOFRONT:      Screen nach vorne bringen
  151.   TOBACK:       Screen nach hinten bringen
  152.   SHANGHAI:     Shanghai-Modus einschalten
  153.   NOSHANGHAI:   Shanghai-Modus ausschalten
  154.   POPPUB:       PopPub-Modus einschalten
  155.   NOPOPPUB:     PopPub-Modus ausschalten
  156.   DEFAULT:      Screen zum System-Default-Screen machen
  157.  
  158.  
  159. Das ist ziemlich viel und kompliziert dazu. Aber im Prinzip lassen
  160. sich ja nur sechs verschiedene Sachen damit machen, der Rest sind
  161. Parameter dafür.
  162.  
  163.  
  164. 1.1)  OPEN
  165.  
  166.   Öffnet einen neuen Screen. Wenn der Screen schon existiert, bekommt
  167.   man eine entsprechende Fehlermeldung serviert. Folgende Argumente
  168.   können bei OPEN noch angegeben werden:
  169.  
  170.  
  171.   1.1.1)  NAME:  Der Name des Screens.
  172.     Unter diesem Namen wird der Screen als Public-Screen angemeldet. Ist
  173.     kein TITLE angegeben, wird der Name auch als Titel verwendet. Der NAME
  174.     muß angegeben werden.
  175.  
  176.   1.1.2)  TITLE:  Der Screentitel.
  177.     Das ist der Text, der in der Titelzeile des Screens zu sehen ist.
  178.     Sichtbar ist er allerdings nur dann, wenn das aktive Fenster keinen
  179.     eigenen Titel setzt.
  180.  
  181.   1.1.3)  DEPTH/PLANES:  Tiefe des Screens.
  182.     Sie legt hauptsächlich fest, wieviele verschiedene Farben dargestellt
  183.     werden können - es sind 2^DEPTH. Für jeden Graphikmodus gelten
  184.     bestimmte Grenzen für DEPTH.
  185.  
  186.     Werden sie überschritten, gibt es eine entsprechende Fehlermeldung.
  187.     Die Voreinstellung wird aus dem Default-Screen kopiert.
  188.  
  189.   1.1.4)  MODE:  legt den Grafikmodus fest.
  190.     Hier gibt man - analog zu den Bezeichnungen in Prefs/ScreenMode - den
  191.     Namen der Auflösung an. Dabei ist es nicht nötig, sich an die Groß-/
  192.     Kleinschreibung zu halten.
  193.  
  194.     Da Commodores Kreativität so weit geht, daß in jeder neuen OS-Release
  195.     die Display-Modes auch neue Namen erhalten, kann der Mode auch als
  196.     Pattern angegeben werden. Es wird dann mit der pattern.library gesucht,
  197.     wenn Mode nicht auf Anhieb gefunden wird.
  198.  
  199.     So läßt sich der Highres-Mode mit Zeilensprung in PAL recht zuverlässig
  200.     mit MODE=PAL:Hi#?lace#? wählen 8-)
  201.  
  202.     Wer Modi, die keinen Namen haben, verwenden möchte, gibt einen String
  203.     an, in dem jeder Buchstabe für eine bestimmte Eigenschaft steht. Wie
  204.     diese kombiniert werden können, und welche überhaupt verfügbar sind,
  205.     hängt von Graphikhardware und Monitor ab. Bei ungültigen Eingaben
  206.     wird eine entsprechende Fehlermeldung ausgegeben.
  207.  
  208.     Die einzelnen Buchstaben stehen für:
  209.       H: Hires           (Default: Lores)
  210.       L: Lace            (Default: Kein Interlace)
  211.       S: Superhires
  212.       E: Extrahalfbright
  213.       V: VGA
  214.       P: Productivity
  215.       A: A2024 mit 10Hz
  216.       F: A2024 mit 15Hz
  217.       X: HAM
  218.  
  219.     Der gewünschte Modus wird einfach durch Hintereinanderschreiben der
  220.     einzelnen Buchstaben angegeben - z. B. MODE=SL für SuperHires-Lace
  221.  
  222.     Der Default-Mode wird vom Default-Public-Screen kopiert.
  223.  
  224.   1.1.5)  DISPID:  DisplayID des zu öffnenden Screens.
  225.     Sie kann alternativ zu MODE angegeben werden. Es darf allerdings nur
  226.     MODE oder DISPID aufgeführt sein, nicht beides.
  227.  
  228.     Gültige Werte für eine DisplayID sind in graphics/displayinfo.h zu
  229.     finden, vorausgesetzt, der entsprechende Monitor steht zur Verfügung.
  230.     (Die Liste gibt auch "ScreenManager LIST DISPID" aus.)
  231.  
  232.     Da der ScreenManager keine DualPlayfield-Screens unterstützt,
  233.     werden entsprechene DisplayIDs nicht akzeptiert.
  234.  
  235.     Die DISPID muß hexadezimal angegeben werden. Es dürfen $ oder 0x
  236.     davor stehen.
  237.  
  238.   1.1.6)  SIZE:  Größe des Screens in Pixeln.
  239.     Voreingestellt ist Overscan-Text. Die Größe wird in dem Format
  240.     LEFT,TOP,WIDTH,HEIGHT angegeben.
  241.  
  242.     Da WIDTH und HEIGHT wohl öfter gebraucht werden als LEFT und TOP,
  243.     gelten, wenn nur zwei Werte angegeben sind, diese als WIDTH und
  244.     HEIGHT. Zur besseren Lesbarkeit können sie auch als WIDTH×HEIGHT
  245.     statt WIDTH,HEIGHT angegeben werden.
  246.  
  247.     Um die Overscan-Größen bequemer handhaben zu können, kann man auch
  248.     die Overscan-Bereiche, die das System anbietet, namentlich angeben.
  249.  
  250.     Erlaubte Overscan-Namen sind:
  251.       OSCAN_NORM  Kein Overscan, Hardware-Default. Was C= offiziell
  252.                   als Auflösung angibt.
  253.       OSCAN_TXT   Text-Overscan, wird in Prefs eingestellt (Text auch in
  254.                   Ecken noch lesbar). OSCAN_TEXT ist auch erlaubt.
  255.       OSCAN_STD   Standard-Overscan, wird in Prefs eingestellt (Bild füllt
  256.                   gerade Monitor aus). OSCAN_STANDARD ist auch erlaubt.
  257.       OSCAN_MAX   Maximaler Overscan, wird durch Hardware festgelegt
  258.  
  259.     Die tippfaulen Leute können den _ oder das OSCAN_ auch weglassen.
  260.  
  261.     Um von diesen Werten abweichende Größen zu erhalten, schreibt man
  262.     hinter den Overscan - durch einen Doppelpunkt getrennt - eine
  263.     Größenangabe. In diesem Fall wird der entsprechende Overscan benutzt
  264.     und die Größenangaben werden auf die Overscan-Größe _addiert_.
  265.  
  266.     Für Puristen:
  267.  
  268.       [[OSCAN[_]](NORM|TXT|TEXT|STD|STANDARD|MAX)[:]][[left,top,]width(,|x)height]
  269.  
  270.     Also sieht eine fertige SIZE-Angabe z.B. so aus:
  271.  
  272.       SIZE=OSCAN_STD:-10,-10,+20,+20
  273.  
  274.     Das ergibt einen Screen, bei dem die Größe den Standard-Overscan in
  275.     jeder Richtung um 10 Pixel überragt.
  276.  
  277.   1.1.7)  DISPCLIP:  Größe des sichtbaren Bereichs des Screens.
  278.     Hier gilt das gleiche Format wie für SIZE.
  279.  
  280.   1.1.8)  COLORS:  legt die Farben als RGB-Informationen fest.
  281.     Sie werden als 3- oder 6-stellige Hexadezimalzahlen eingegeben
  282.     und durch Komma getrennt. In _diesem_ Format darf kein führendes
  283.     $ oder 0x auftauchen. Ein Screen mit schwarz und weiß wird dann
  284.     so angegeben:
  285.       COLORS=000,FFF oder COLORS=000000,FFFFFF
  286.  
  287.     Um mehr als 8 Bits pro Farbe angeben zu können, werden die
  288.     einzelnen Farbanteile durch den Doppelpunkt getrennt. _Dabei_
  289.     werden die drei Zahlen als Dezimalzahlen interpretiert,
  290.     solange kein 0x oder $ davorsteht.
  291.  
  292.     Obiger Screen könnte also auch so angegeben werden:
  293.       COLORS=0x0:0x0:0x0,$FFFFFFFF:$FFFFFFFF:$FFFFFFFF oder
  294.       COLORS=0:0:0,4294967296:4294967296:4294967296
  295.  
  296.     Eine Farbe hat also dieses Format:
  297.       RGB |
  298.       RRGGBB |
  299.       [$|0x] RRRRRRRR ':' [$|0x] GGGGGGGG ':' [$|0x] BBBBBBBB
  300.  
  301.     Da es bereits Farbtabellen in einem ähnlichen Format gibt
  302.     (X Window System), diese aber i. a. nur 8 Bits umfassen, gibt
  303.     es eine Erkennung für diesen Fall: Sind alle 3 Farbanteile <256,
  304.     wird von einer 24 Bit-Palette ausgegangen und die Farbanteile
  305.     entsprechend von 8 auf 32 Bits aufgeweitet.
  306.  
  307.   1.1.9)  PENS:  Farbstifte, die für 3D-Darstellung benutzt werden.
  308.     Dabei ist jeder Stift für bestimmte Effekte vorgesehen. Eine nähere
  309.     Erläuterung ist in dem Include-File intuition/screens.h bei der
  310.     Beschreibung der DrawInfo.Pens zu finden.
  311.  
  312.     Jedes Zeichen wird als (hexadezimale) Farbnummer der bei COLORS
  313.     angegebenen Farben interpretiert. Daraus folgt, daß für die Stifte
  314.     nur die ersten 16 Farben zur Verfügung stehen. Wer _wirklich_ mehr
  315.     braucht, kann mir ja schreiben.
  316.  
  317.     Man muß nicht alle Stifte angeben, aber man muß alle Stifte, die
  318.     _vor_ einem gewünschten Stift liegen, spezifizieren.
  319.  
  320.     Für die Farbstifte gilt:
  321.  
  322.     Stift Bezeichnung      wird verwendet für ...
  323.       1   DETAILPEN        Schrift (1.3-kompatibel)
  324.       2   BLOCKPEN         Fülloperationen (1.3-kompatibel)
  325.       3   TEXTPEN          normale Beschriftungen
  326.       4   SHINEPEN         helle Kanten an 3D-Objekten
  327.       5   SHADOWPEN        dunkle Kanten an 3D-Objekten
  328.       6   FILLPEN          Hintergrund aktivierter Elemente \ z.B. aktiver
  329.       7   FILLTEXTPEN      Text auf aktivierten Elementen   / Fensterrahmen
  330.       8   BACKGROUNDPEN    Hintergrund - muß auf 0 gesetzt werden
  331.       9   HIGHLIGHTTEXTPEN hervorgehobene Beschriftungen
  332.     Folgende Pens sind erst ab 3.0 verfügbar
  333.       10  BARDETAILPEN     Text in Screentitle und Default für Menütext
  334.       11  BARBLOCKPEN      Hintergrund für Screentitle und Menü
  335.       12  BARTRIMPEN       Farbe der Zeile unter Screenbar
  336.  
  337.     Das klingt ziemlich kompliziert und das Ergebnis ist auch nicht immer
  338.     ganz vorhersehbar. Am besten fängt man mit einem der unten aufgeführten
  339.     Beispiele an und modifiziert es, dann bekommt man schnell ein Gefühl
  340.     dafür.
  341.  
  342.   1.1.10)  NODRAG:  Dieses Flag verhindert ein Verschieben des Screens.
  343.     Er kann dann nicht mehr mit der Maus bewegt werden. Dieses Feature
  344.     ist erst ab OS 3.0 möglich.
  345.  
  346.   1.1.11)  EXCLUSIVE:  Screens mit dieser Eigenschaft beanspruchen immer
  347.     den ganzen Bildschirm für sich. Sie können nicht verschoben werden
  348.     und sie sind auch nie im Hintergrund zu sehen, wenn ein anderer
  349.     Screen heruntergezogen wird.
  350.     Auch dieses Flag ist erst ab OS3.0 möglich.
  351.  
  352.   1.1.12)  INTERLEAVED:  Fordert für diesen Screen Interleaved BitMaps
  353.     an. Diese sollen das Scrolling beschleunigen. (Ab OS3.0)
  354.  
  355.   1.1.13)  PARENT:  Gibt den Namen des Parent-Screens für diesen Screen an.
  356.     Ab OS3.0 existieren Parent- und Child-Screens. Dabei gehören zu einem
  357.     Parent-Screen ein oder mehrere Childs. Child-Screens können nur
  358.     innerhalb des Parent-Screens bewegt werden. Auch nach vorne oder
  359.     hinten können ein Parent-Screen und seine Child nur als Gruppe bewegt
  360.     werden. Wird bei einen Child-Screen NODRAG gesetzt, ist er lediglich
  361.     relativ zu seinem Parent fixiert.
  362.  
  363.   1.1.14)  FONT:  Font, der dann Default-Font des Screens wird.
  364.     Das kann auch ein proportionaler Font sein. Konnte der Font nicht
  365.     gefunden werden, wird der Screen trotzdem mit dem Default-Font
  366.     des Systems geöffnet! (Dieser Font wird mit dem Voreinstellungsprogramm
  367.     SYS:Prefs/Font gesetzt.)
  368.  
  369.     Das .font am Ende ist optional. Außerdem kann die gewünschte Größe X
  370.     auch mit .X angehängt werden: z. B. FONT=diamond.12
  371.  
  372.   1.1.15)  FONTSIZE:  Größe des obigen Fonts.
  373.     Hier kann so ziemlich alles angegeben werden, da die
  374.     diskfont.library im Zweifelsfalle einen Font anderer
  375.     Größe entsprechend skaliert.
  376.  
  377.     Diese Option gibt hübsche Effekte mit dummen Programmen!
  378.  
  379.   1.1.16)  CLOSEGAD:  Hängt ein Closegadget an den Screen.
  380.     Damit wird ein Schließsymbol (Closegadget) in der linken oberen Ecke
  381.     des Screens eingerichtet. Man kann dann einfach per Mausklick den
  382.     Screen wie ein Fenster schließen.
  383.  
  384.   1.1.17)  AUTOCLOSE:  Schließt den Screen automatisch nach Benutzung.
  385.     Ist diese Option angegeben, wird der Screen nach dem Verschinden des
  386.     letzten Fensters geschlossen.
  387.  
  388.   1.1.18)  CX_TOFRONT:  Hotkey, um den Screen nach vorne zu bringen.
  389.     Hiermit kann man einen Hotkey (keine heiße Taste, sondern eine
  390.     Abkürzung) definieren, mit dem der Screen bei Bedarf in den
  391.     Vordergrund gebracht werden kann.
  392.  
  393.     Die Definition entspricht dem Standard der commodities.library. Wie
  394.     eine solche Tastenkombination beschrieben wird, ist weiter unten
  395.     erläutert.
  396.  
  397.   1.1.19)  CX_DEFAULT:  Hotkey, um den Screen zum System-Default-Screen
  398.     zu machen.
  399.     Analog zu obigem ist das ein Hotkey, mit dem der Screen zum System-
  400.     Default-Screen erklärt werden kann. Auch hier gelten die weiter unten
  401.     nochmal aufgeführten Definitionen der commodities.library.
  402.  
  403.   1.1.20)  CX_PRIORITY:  Priorität für obige Hotkeys.
  404.     Wenn sie nicht angegeben ist, wird ein Default von 0 benutzt.
  405.  
  406.   1.1.21)  Weitere Optionen
  407.     Zusätzlich kann man noch die Optionen
  408.  
  409.       SHANGHAI, NOSHANGHAI, POPPUB, NOPOPPUB, DEFAULT, TOFRONT oder TOBACK
  410.  
  411.     angeben. Eine nähere Beschreibung folgt noch, da diese auch verwendet
  412.     werden können, ohne einen Screen zu öffnen.
  413.  
  414.   1.1.22)  FORCE/EXPERT:  Schaltet einige Sicherheitsabfragen aus.
  415.     In diesem Modus sind die Tests, ob die Hardware des Rechners die
  416.     angegebenen Größen für SIZE, DISPCLIP und DEPTH überhaupt darstellen
  417.     kann, ausgeschaltet. Wenn der Rechner dann Müll anzeigt oder gar
  418.     abstürzt, bitte KEINEN Bugreport an C= oder mich!
  419.  
  420.   1.1.23)  QUIET:  unterdrückt Fehlermeldungen
  421.     Mit diesem Schlüsselwort werden fast alle Fehlermeldungen, die
  422.     normalerweise im CLI ausgegeben werden unterdrückt. Dadurch
  423.     wird verhindert, daß ein bislang geschlossenes Console-Fenster
  424.     aufgeht, wenn man z. B. mit SM OPEN <scr> >NIL: QUIET einen evt.
  425.     schon offenen Screen öffnen möchte.
  426.  
  427.  
  428. 1.2)  CLOSE
  429.  
  430.   Schließt einen vorhandenen Screen.
  431.  
  432.  
  433.   1.2.1)  NAME:  Name des Screens.
  434.     Die Groß-/Kleinschreibung muß nicht korrekt sein. Sind aber mehrere
  435.     Screens da, die passen könnten, wird der erste genommen, der gefunden
  436.     wird. Ist der NAME richtig geschrieben, wird _immer_ der
  437.     entsprechende Screen genommen.
  438.  
  439.     Wenn man Angela Schmidts pattern.library (Fish 625 oder CD "Meeting
  440.     Pearls") installiert hat, kann man sogar ein Pattern angeben -
  441.     insbesondere wo* für Workbench!
  442.  
  443.     Im Moment gibt es drei spezielle Namen:
  444.       * steht für den Screen, auf dem die Console dieses Prozesses liegt
  445.       # steht für den Public-Screen, der vorne liegt
  446.       . steht für den System-Default-Screen
  447.  
  448.     Diese Konventionen für den Namen gelten überall, außer natürlich bei
  449.     OPEN.
  450.  
  451.  
  452.   1.2.2)  FORCE:  Schließt auch fremde Screens.
  453.     Damit können auch Public-Screens, die weder vom ScreenManager noch von
  454.     der Workbench stammen, geschlossen werden.
  455.  
  456.     Allerdings ist dann das Programm, welches sie geöffnet hat, nicht
  457.     unbedingt darüber informiert. Wenn es später versucht, ein Fenster auf
  458.     diesem Screen zu öffnen, kommt es zum Absturz. Auch kann es sein, daß
  459.     zum Screen gehörige Resourcen (z. B. sein Font) nicht freigegeben werden.
  460.  
  461.   1.2.3)  QUIET: unterdrückt Fehlermeldungen
  462.     Mit diesem Schlüsselwort werden fast alle Fehlermeldungen, die
  463.     normalerweise im CLI ausgegeben werden, unterdrückt. Dadurch
  464.     wird verhindert, daß sich ein bislang geschlossenes Console-Fenster
  465.     öffnet, wenn man z. B. mit SM CLOSE <scr> QUIET einen evt. schon
  466.     geschlossenen Screen schließt.
  467.  
  468.  
  469. 1.3)  LIST
  470.  
  471.   Gibt eine Liste der Screens oder Auflösungen aus.
  472.  
  473.  
  474.   1.3.1)  <ohne Parameter>:  Zeigt die Screenliste an.
  475.     Ausgegeben werden Name, Titel, Auflösung, Farben und Anzahl der
  476.     Visitor-Fenster bzw. Locks des jeweiligen Screens.
  477.  
  478.     Dahinter steht <SM>, wenn der Screen vom ScreenManager geöffnet wurde.
  479.     Es kann dort auch noch DEFAULT stehen, wenn es der System-Default-Screen
  480.     ist, oder PRIVATE, wenn dieser Screen im Moment nicht öffentlich ist.
  481.  
  482.     Ist das Shell-Fenster zu schmal, wird die Ausgabe zweizeilig formatiert.
  483.  
  484.   1.3.2)  DISPID:  Zeigt sämtliche Auflösungen an.
  485.     Es wird eine Liste aller Darstellungsmodi, die dem System bekannt
  486.     sind, ausgegeben. Hier kann auch ein Pattern angegeben werden um die
  487.     Liste einzuschränken.
  488.  
  489.     Es stehen, wenn vorhanden, auch der Name und die Verfügbarkeit dabei.
  490.  
  491.   1.3.3)  MODE:  Zeigt Auflösungen an.
  492.     Gibt eine Liste der Darstellungsmodi, die dem System namentlich
  493.     bekannt sind, aus und zeigt deren Verfügbarkeit an.
  494.  
  495.     Hier ist es erlaubt ein Pattern anzugeben, um die gelisteten Modi
  496.     einzuschränken. Zum Beispiel SM LIST MODE PAL:#?
  497.  
  498.  
  499. 1.4)  INFO
  500.  
  501.   Gibt Informationen über einen Screen oder einen Darstellungsmodus aus.
  502.  
  503.  
  504.   1.4.1) <ohne Parameter>:  Druckt die momentan gültigen Public-Screen-Modes
  505.     aus.
  506.  
  507.   1.4.2)  NAME:  Zeigt Eigenschaften dieses Screens.
  508.     Es werden z. B. seine Auflösung und Farbanzahl ausgegeben. Auch hier
  509.     gelten die bei CLOSE erwähnten Sonderzeichen.
  510.  
  511.   1.4.3)  DISPID/MODE:  Gibt Infos über den Darstellungsmodus aus.
  512.     Es sind z. B. maximale Farbanzahl und minimale/maximale Größe eines
  513.     solchen Screens dabei.
  514.  
  515.     Auch hier kann mit einem Pattern versucht werden, dem Tippfehler ein
  516.     Schnippchen zu schlagen.
  517.  
  518.     Will man die Information über mehrere DisplayIDs oder Modi haben, kann
  519.     man als DISPID/MODE ein Pattern angeben und muß noch das Schlüsselwort
  520.     LIST angeben. So gibt z.B.
  521.  
  522.       ScreenManager INFO MODE PAL:#? LIST
  523.  
  524.     die Infos aller PAL-Modi aus.
  525.  
  526.     wichtig ist, daß hinter DISPID/MODE wirklich ein Pattern steht, da die
  527.     Kommandozeile sonst nicht mehr eindeutig ist.
  528.  
  529.  
  530.   1.4.4)  EXPERT:  Gibt etwas mehr Infos aus.
  531.     Diese Option kann bei allen Parametern von INFO zusätzlich angegeben
  532.     werden. Es werden dann die Strukturen NameInfo, DisplayInfo,
  533.     DimensionInfo und MonitorInfo komplett angezeigt.
  534.  
  535.   1.4.5)  QUIET:  unterdrückt Fehlermeldungen.
  536.     Mit diesem Schlüsselwort werden fast alle Fehlermeldungen, die
  537.     normalerweise im CLI ausgegeben werden unterdrückt. Dadurch
  538.     wird verhindert, daß ein bisher geschlossenes Console-Fenster
  539.     aufgeht, wenn man z. B. so testet, ob ein Screen schon existiert:
  540.  
  541.        ScreenManager >NIL: INFO MyScreen QUIET
  542.        If ERROR
  543.          ...
  544.        EndIf
  545.  
  546.  
  547.  
  548. 1.5)  Geöffnete Screens manipulieren.
  549.  
  550.   Folgende Optionen modifizieren die Modes eines vorhandenen
  551.   Public-Screens. Dafür muß natürlich auch dessen Name angegeben sein.
  552.   Auch hier gelten wieder die Abkürzungen, die bei CLOSE erläutert
  553.   wurden.
  554.  
  555.   All diese Optionen können natürlich auch beim Öffnen eines neuen
  556.   Screens angegeben werden.
  557.  
  558.   1.5.1)  COLORS:  Nachträgliches Ändern der Farben.
  559.     Damit kann die Farbpalette eines Screens im Nachhinein geändert
  560.     werden. Die genaue Beschreibung des Formats ist unter OPEN (1.1.8)
  561.     zu finden.
  562.  
  563.     Farben auf Screens fremder Programme können nur mit der Option FORCE
  564.     geändert werden.
  565.  
  566.     Achtung! Werden die Farben des Workbench-Screens geändert, bekommt
  567.     der IPrefs-Demon das nicht mit - genausowenig wie Intuition selber.
  568.     Es kann dann zu "Effekten" bei Benutzung von Prefs/Palette kommen.
  569.  
  570.   1.5.2)  POS:  Setzt die Screenposition neu.
  571.     Damit kann die Position eines Screens nachträglich geändert werden.
  572.     Das Format ist "POS=x,y".
  573.  
  574.     Screens, die vom Eigentümer mit dem Attribut NODRAG versehen
  575.     wurden, um ein Verschieben zu verhindern, können nur unter Angabe
  576.     von FORCE bewegt werden.
  577.  
  578.   1.5.3)  PLANES:  Setzt die Anzahl der Planes des Screens neu.
  579.     Diese Option ermöglicht es, die Anzahl der Planes des Screens zu erhöhen
  580.     oder zu reduzieren. Sie wird nur zusammen mit FORCE akzeptiert - sonst
  581.     wird lediglich eine Warnung ausgegeben.
  582.  
  583.     Da nicht bekannt sein kann, ob die Größe der BitMap-Struktur, in der
  584.     für jede Plane ein Zeiger stehen muß, für die verlangte Anzahl der
  585.     Planes ausreicht, _kann_ es passieren, daß bei Erhöhung der Planes
  586.     fremder Speicher überschrieben wird!!! Also bitte _mehr_ als
  587.     vorsichtig sein.
  588.  
  589.     Unter OS V3.0 oder höher ist es nicht möglich die Anzahl der Planes zu
  590.     erhöhen, da die vom OS bereits geholte Colormap wohl zu klein ist.
  591.  
  592.   1.5.4)  DEFAULT:  Screen zum System-Default-Screen machen.
  593.  
  594.   1.5.5)  TOFRONT:  Screen nach vorne bringen.
  595.  
  596.   1.5.6)  TOBACK:   Screen nach hinten bringen.
  597.  
  598.   1.5.7)  CX_TOFRONT:  Ändert den Hotkey zum Nach-vorne-bringen des Screens.
  599.     Mit CX_TOFRONT="" wird er abgeschaltet.
  600.  
  601.   1.5.8)  CX_DEFAULT:  Ändert den Hotkey, der den Screen zum System-Default-
  602.     Screen macht. Auch er läßt sich mit dem Leerstring ausschalten.
  603.  
  604.  
  605.  
  606. 1.6)  Globale Einstellungen Ändern.
  607.  
  608.   Diese Optionen beeinflussen globale Einstellungen und können auch
  609.   ohne Screen angewandt werden:
  610.  
  611.   1.6.1)  SHANGHAI:  Shanghai-Mode einschalten.
  612.     Im Shanghai-Modus gehen auch die Fenster, die früher auf der Workbench
  613.     aufgingen, auf dem System-Default-Screen auf.
  614.  
  615.     Damit kann man vor allem alte Programme, die noch nichts über das
  616.     Konzept des Default-Screens wissen, von der Workbench fernhalten.
  617.  
  618.   1.6.2)  NOSHANGHAI:  Shanghai-Mode ausschalten.
  619.  
  620.   1.6.3)  POPPUB:  PopPub-Mode einschalten.
  621.     In diesem Modus kommt der Screen nach vorne, sowie ein Fenster darauf
  622.     geöffnet wird.
  623.  
  624.   1.6.4)  NOPOPPUB:  PopPub-Mode ausschalten.
  625.  
  626.  
  627.  
  628.                              Beispiele
  629.                              ---------
  630.  
  631. Hier noch ein paar Beispiele:
  632.  
  633.   ScreenManager OPEN BlueScreen
  634.     DISPID=$00029004 PLANES=3 PENS=171657404 FONT=courier.13
  635.     SIZE=OSCAN_TEXT:+100,+100 DISPCLIP=OSCAN_TEXT
  636.     COLORS=13B,AAC,D30,FFF,CC2,015,7AF,13F
  637.     DEFAULT CLOSEGAD
  638.  
  639.   ScreenManager OPEN NobelScreen
  640.     PLANES=3 PENS=121657404
  641.     COLORS=9A6100,210:220:255,0533CC,0xFF:0xFF:0x14,DC0,730,F83,C30
  642.     CX_PRI=10 CX_TOFRONT="lcommand s" CX_DEFAULT="lcommand shift s"
  643.     DEFAULT SHANGHAI POPPUB CLOSEGAD
  644.  
  645.   ScreenManager OPEN ss TITLE NessieScreen
  646.     MODE=PAL:[Hh]i*[Ll]ace* PLANES=2 SIZE=STD:0×0 PENS=021123103
  647.     COLORS=69A,FEE,002,F7C
  648.     DEFAULT SHANGHAI CLOSEGAD CX_TOFRONT "LCommand s" POPUP
  649.  
  650.   ScreenManager OPEN SimpleWB
  651.     DEFAULT SHANGHAI POPPUB
  652.  
  653.   ScreenManager OPEN Child
  654.     SIZE=TEXT:+40,+40,-80,-80
  655.     CLOSEGAD PARENT SimpleWB
  656.  
  657.   ScreenManager LIST
  658.  
  659.   ScreenManager LIST MODE=PAL:#?
  660.  
  661.   ScreenManager INFO DISPID=$00008020 EXPERT
  662.  
  663.   ScreenManager CLOSE Simple*
  664.  
  665. Diese Kommandos müssen in jeweils _einer_ Zeile eingegeben werden.
  666.  
  667. Um auf einem solchen Screen Fenster öffnen zu können, muß man natürlich
  668. ein Programm haben, das sich nicht krampfhaft an die Workbench klammert,
  669. sondern seine Fenster auf dem System-Default-Screen öffnet. Das tun
  670. zumindest die Voreinstellungseditoren Time und Font sowie CON: (und
  671. fälschlicherweise IconEdit *ärger*).
  672.  
  673. Ein Console-Window kann aber auch auf einem Screen, der _nicht_
  674. System-Default-Screen ist, aufgehen:
  675.  
  676.   CON:0/15/640/185/MeinFenster/CLOSE/SCREENNobelScreen.
  677.  
  678. Der Display-Handler der WShell kann das natürlich auch.
  679.  
  680.  
  681.  
  682.                              Workbench
  683.                              ---------
  684.  
  685. Damit die Freunde der Workbench nicht ganz leer ausgehen, kann der
  686. ScreenManager auch die Merkmale (ToolTypes) als Argumente
  687. interpretieren.
  688.  
  689. Die ToolTypes entsprechen den oben aufgeführten Kommandozeilenargumenten.
  690. Es gibt allerdings ein paar Unterschiede:
  691.  
  692.     NOSHANGHAI und NOPOPPUB
  693.  
  694.   gibt es nicht mehr. Sie müssen durch SHANGHAI=FALSE oder POPPUB=0 ersetzt
  695.   werden.
  696.  
  697.   Es gibt einen zusätzlichen ToolType WINDOW. Das Argument wird als
  698.   Filename genommen, in den die Ausgaben z. B. bei LIST wandern. Als
  699.   File gilt natürlich auch eine Fensterbeschreibung wie z. B.
  700.  
  701.     CON:////ScreenManager-Output/CLOSE
  702.  
  703.   Ist WINDOW nicht angegeben, wird kein Fenster geöffnet und eventuelle
  704.   Fehler werden über Requester gemeldet.
  705.  
  706. Die Argumente müssen, auch wenn sie Leerzeichen enthalten, ohne
  707. Anführungszeichen eingegeben werden, da im Gegensatz zur
  708. Kommandozeile ja klar ist, wo das Argument aufhört.
  709.  
  710. Wurde ein Projekt mit dem ScreenManager als Default-Tool angeklickt,
  711. werden die ToolTypes des ScreenManager als Defaults genommen und dann
  712. von denen des Projekts überschrieben.
  713.  
  714. So kann man sich beispielsweise für jeden Screen, den man oft benutzt
  715. (bei mir ShellScreen und Workbench), ein Projekt mit NAME=<ScreenName>
  716. anlegen und einen ScreenManager mit dem ToolType DEFAULT.
  717.  
  718. Klickt man jetzt erst auf das Projekt-Icon und dann zweimal mit gedrückter
  719. Shift-Taste auf den ScreenManager, wird der Screen <ScreenName> zum
  720. System-Default-Screen.
  721.  
  722. Je nachdem, welches Pärchen ich "doppelklicke", kann ich so den ShellScreen
  723. oder den Workbench-Screen zum System-Default-Screen machen. Das Gleiche
  724. geht z. B. auch mit POS - und fertig ist der WB-Klick-Baukasten.
  725.  
  726.  
  727. Noch eine Bemerkung zur Workbench: Fehlermeldungen werden, wenn kein
  728. Ausgabefenster mit WINDOW=... angegeben wurde, mit einem Requester gemeldet.
  729. Leider kann es vorkommen, daß bei recht langen Fehlermeldungen, die durch
  730. extrem lange Screennamen verursacht werden können, die Layout-Routinen von
  731. Intuition etwas durcheinandergeraten.
  732.  
  733.  
  734.                              Hotkeys
  735.                              -------
  736.  
  737. Für die, die den dicken Schuber gerade nicht greifbar haben, hier
  738. noch die Sondertasten von Commodities V37. (kein Anspruch auf
  739. Vollständigkeit 8-):
  740.  
  741. Events:
  742.   rawkey, rawmouse, event, pointerpos,
  743.   timer, newprefs, diskremoved, diskinserted
  744.  
  745. Größtenteils nicht sehr sinnvoll, aber ganz lustig, wenn bei einem
  746. DiskInsert der Screen mit der Shell nach vorne kommt. Außerdem ist
  747. Timer noch ganz interessant, da man sonst keinen Qualifier allein
  748. ansprechen kann. Aber natürlich will ich das nicht empfehlen.
  749. Allerdings bin ich der Meinung, daß sich jeder sein System kaputt-
  750. konfigurieren darf, wie er will - nur beschweren darf er sich dann
  751. nicht.
  752.  
  753. Qualifier:
  754.   lshift, rshift, capslock, control, lalt, ralt, lcommand, rcommand,
  755.   numericpad, repeat, relativemouse, shift, caps, alt, upstroke
  756.  
  757. Keys:
  758.   (midbutton, rbutton, leftbutton)
  759.   comma, space, backspace, tab, enter, return, esc, del
  760.   up, down, right, left
  761.   f1, f2, f3, f4, f5, f6, f7, f8, f9, f10
  762.   help
  763.   sowie alle normalen druckbaren Zeichen, die dann für sich selbst stehen
  764.  
  765. Eine Hotkey-Definition daraus sieht so aus:
  766.  
  767.   [<Qualifier> <Qualifier> ... ] <Event>|<Key>
  768.  
  769. Da die Qualifier von der auslösenden Taste durch ein Leerzeichen getrennt
  770. werden, muß der ganze Ausdruck in Anführungszeichen gepackt werden. Also
  771. etwa so:
  772.  
  773.   CX_TOFRONT="lcommand s"
  774.   CX_DEFAULT="lcommand shift s" oder CX_DEFAULT="lcommand S"
  775.  
  776. Um Hotkeys mit großen Buchstaben auslösen zu können (wie die Alternative
  777. des zweiten Beispiels), muß dann natürlich noch die Shift-Taste gedrückt
  778. werden (oder die KeyMap ist maximal mystisch...).
  779.  
  780.  
  781.  
  782.                              Schluß
  783.                              ------
  784. Vielen Dank an Frank Neumann (Franky) für die englische Übersetzung.
  785. Vielen Dank auch an Angela Schmidt für Bug-Reports und Anregungen.
  786.  
  787. Ich danke auch:
  788.   Frank Schwarz
  789.   Bernd Ernesti
  790.   Oliver Knorr
  791.  
  792. Bug-Reports, Verbesserungsvorschläge, Glückwünsche, Schokokugeln,
  793. Flames und anderes (keine Briefbomben oder Raubkopien) an:
  794.  
  795.     zza@rz.uni-karlsruhe.de
  796.  
  797. oder
  798.  
  799.     Bernhard Möllemann
  800.     Luisenstraße 17
  801.  
  802.     76137 Karlsruhe
  803.  
  804.     Germany
  805.  
  806.  
  807.